package oj;

//链表的中间结点：给定一个头结点为 head 的非空单链表，返回链表的中间结点，如果有两个中间结点，则返回第二个中间结点。
public class Solution_876 {
    public static int sizeOf(ListNode head){
        int size = 0;
        for(ListNode cur = head;cur != null;cur = cur.next){
            size++;
        }
        return size;
    }
    public ListNode middleNode(ListNode head){
        //先计算链表的元素个数
        int size = sizeOf(head);
        int x = size / 2;//会向下取整
        //在循环结束后会指向中间结点
        ListNode ans = head;
        //从头结点开始向后跳x步
        for (int i = 0; i < x; i++) {
            ans = ans.next;
        }
        return ans;
    }
}
